As computers become more powerful and software applications are developed to help accomplish more and more tasks, computer users become more dependent on computers to accomplish tasks. As this use increases, computer users often find themselves using multiple software applications simultaneously. For example, increases in memory and processing power allow a computer user to have multiple applications open, which may include, for example, several word processing documents and multiple web browsers, along with other programs, such as graphic programs, gaming applications, and many other software applications. Simultaneously having several computer applications open can have advantages. For example, a user may switch between one or more applications without having to wait for an application to load. However, when a computer user has several software applications open, it may become difficult for the computer user to switch between a multitude of applications without some type of organization.
One solution to help solve problems associated with having many software applications running involves the concept of virtual desktops. Virtual desktops are contrasted with an active desktop. An active desktop is what is presented to a user on a physical hardware display (e.g., a monitor, LCD display, television screen, etc.). An active desktop may contain, for example, a background image, icons representing shortcuts to programs and/or files, and one or more application windows (in which a user may interact with or view information associated with an application). In contrast, a virtual desktop is not usually currently displayed but includes information, often in memory, that represents icons, background images, applications, application windows, the position of application windows, and other characteristics as known in the art. Thus, as known in the art, a user may cause a present active desktop to be stored in memory as a virtual desktop and activate a virtual desktop as the active desktop by using the information associated with the virtual desktop. As such, a computer user may have access to virtual desktops to help sort various software applications. It is further noted that both active and virtual desktops may span one or more physical display, i.e., they dot have to be limited to only one physical display.
For example, a computer user may have several word processing documents open on the active desktop. The computer user may also have several web browser application windows associated with a first virtual desktop. The computer user may also have communication applications, such as email and instant messaging programs, associated with a second virtual desktop. Thus, the computer user is able to organize the various open software applications on several desktops, thereby making it easier to find and interact with software applications. In this example, if the user wants to use a communication application, he or she may activate the second virtual desktop as the active desktop, and the previously active desktop having the word processing documents would then be represented in memory as a virtual desktop.
As virtual desktops became available, different techniques evolved that relate to managing virtual desktops and the characteristics (including applications, windows, window positions, background images, etc.) associated therewith. Managing virtual desktops includes, for example, moving an active (running) application from an active desktop to a virtual desktop (i.e., the application is still running, but the application window is logically removed or “hidden” from the active desktop thus no longer being physically displayed and information representing the application window and its positioning is associated with a virtual desktop), moving icons from an active desktop to a virtual desktop, and other similar tasks.
As known in the art, an active/running application may have an application window. The application window is a window that the application uses to present information to a user and/or to receive user input from a user. As also known, an application window may have various components, such as a title bar (to display information such as the application name or document open within the application), control buttons (such as buttons to minimize, maximize, or close the application), and borders (often used to resize an application window). An active application, however, does not necessarily require an application window. For example, some applications run in the background, i.e., they do not have an application window and run in a state where a user does not generally see the application running. (Although it is recognized that most operating systems provide a method for a user, often a more advanced user, to see a list of all running applications, even those running as a background process.)
In some implementations of virtual desktop systems, virtual desktop software hides a software application window that is usually shown to a user. Meanwhile, the application continues to run in the background and information associated with the software application and its application window is stored in memory and associated with a virtual desktop. Thus, in this example, moving an application to a virtual desktop may involve (1) hiding the application window from the active desktop (this may involve, for example, removing the application from the taskbar or system tray), (2) allowing the application to continue to run in the background (i.e., the application is not actually closed), and (3) updating memory associated with a virtual desktop to specify that the application is now associated with that particular virtual desktop and, perhaps, to further specify the window position of the application's application window. Thus, if the user switches to the virtual desktop (i.e., uses the data representing a virtual desktop to make the virtual desktop the active desktop), the virtual desktop software may unhide the application window.
Various solutions are known to accomplish some of the virtual desktop management tasks. For example, one solution to move an active application on the active desktop to a virtual desktop is for a user to right-click (i.e., click the right mouse button of a mouse, as known in the art) on the title bar of an application window. This action will display a menu containing a list of options for the user. For example, the menu may contain standard tasks such as “Close,” “Minimize,” or “Maximize.” The menu may also contain options that relate to virtual desktop management tasks. For example, the menu may contain options such as “Move to Virtual Desktop 1,” “Move to Virtual Desktop 2,” etc. Thus, if a user right-clicks on the title bar of an application window (in the active desktop) and selects “Move to Virtual Desktop 1,” the virtual desktop software will hide the application window and update memory to associate the application with Virtual Desktop 1, i.e., the user has moved the application from the active desktop to a virtual desktop designated “Virtual Desktop 1.”
Many virtual desktop management solutions hide the active desktop in order to display some representation of the virtual desktops. For example, one solution involves pressing one or more function keys, which, when pressed, cause the display to display images representing one or more other virtual desktops. Thus, a user may move an application from one virtual desktop to another. In this solution, however, the active desktop is no longer displayed concurrently with the representations of the virtual desktops. Other known solutions do allow a user to view the active desktop at the same time as viewing visual representations of virtual desktops. In either case, however, the known solutions do not allow a user to move an application directly from the active desktop to a virtual desktop. For example, a user may be able to move an application from a visual representation of the active desktop to a visual representation of a virtual desktop, but the user may not move the application directly from the active desktop to a virtual desktop. It is also not known to move the an application from a visual representation of a virtual desktop directly to the active desktop without having to move the application from the virtual desktop to a representation of the active desktop, not the desktop itself. Other variations of this solution have been implemented that are more graphic intensive in the presentation of the virtual desktops. For example, in a similar solution, a rotatable cube is displayed when a user presses the proper function key(s), wherein each side of the cube represents a different virtual desktop. A user may then give user input, such as by moving a mouse or pressing a key, to rotate the cube, thereby showing the contents of different virtual desktops.
In yet another solution, a floating application window or a sidebar on the active desktop contains visual representations of each virtual desktop. A user may move applications between the different virtual desktops using this solution, but the user is unable to move an application from the active desktop to a virtual desktop.
While many solutions exist that relate to the management of virtual desktops, the known solutions are not without their problems. For example, many solutions do not allow a user to view virtual desktops at the same time as viewing the active desktop. Additionally, the known solutions often require menu-based input, which is not always intuitive to the user. Furthermore, using menu-based input to perform virtual desktop management operations can be time intensive. Therefore, a need exists to have a virtual desktop management solution that, among other things, is more user intuitive, more user friendly, and more efficient.